ATOM Documentation

← Back to App

OAuth Integration & Credentials Guide

This guide provides instructions for setting up OAuth applications and managing credentials for Atom's 45+ native integrations.

1. Universal Callback URLs

When setting up your OAuth applications (Slack, Google, Salesforce, etc.), you must configure the **Redirect URI** to point to your Atom instance.

Handler TypePrimary Callback URLUse Case
**Native (Unified)**https://app.atomagentos.com/api/integrations/callback**Recommended.** Used for Salesforce, HubSpot, Slack, and common native flows.
**Universal (Activepieces)**https://app.atomagentos.com/api/v1/integrations/universal/callbackUsed for Activepieces-driven integrations (e.g. Gmail, Google Drive, Box).

---

2. Setting Up Common Integrations

**Pattern A: Custom Managed Flow (Native)**

These use the **Native Callback**: https://app.atomagentos.com/api/integrations/callback

ServiceScopesClient ID EnvClient Secret Env
**Slack**channels:read, chat:write, groups:read, im:read, mpim:readSLACK_CLIENT_IDSLACK_CLIENT_SECRET
**Salesforce**api, offline_access, refresh_token, webSALESFORCE_CLIENT_IDSALESFORCE_CLIENT_SECRET
**HubSpot**crm.objects.contacts.read, crm.objects.contacts.write, crm.objects.companies.read, crm.objects.companies.write, crm.objects.deals.read, crm.objects.deals.write, contentHUBSPOT_CLIENT_IDHUBSPOT_CLIENT_SECRET
**Notion***(Default Scopes)*NOTION_CLIENT_IDNOTION_CLIENT_SECRET
**Zoho CRM**ZohoCRM.modules.ALL, ZohoCRM.settings.ALLZOHO_CRM_CLIENT_IDZOHO_CRM_CLIENT_SECRET

---

**Pattern B: Universal Integration Service (Activepieces)**

These use the **Universal Callback**: https://app.atomagentos.com/api/v1/integrations/universal/callback

**Communication & Collaboration**

ServiceRequired ScopesEnv Variable Prefix
**Microsoft Teams**Chat.ReadWrite, User.Read, ChannelMessage.SendTEAMS_
**Discord**identify, bot, messages.read, guildsDISCORD_
**Google Chat**chat.spaces.readonly, chat.messagesGOOGLE_CHAT_
**Telegram***(Bot Token based, no callback required)*TELEGRAM_BOT_TOKEN
**Zoom**meeting:write, user:readZOOM_
**Gmail**https://www.googleapis.com/auth/gmail.modifyGOOGLE_
**Outlook**Mail.ReadWrite, offline_accessMICROSOFT_
**Zoho Mail**ZohoMail.messages.READ, ZohoMail.messages.CREATEZOHO_

---

**Pattern C: Meta/Facebook Apps (WhatsApp, Instagram, Meta Ads)**

Meta apps use a **dedicated callback**: https://app.atomagentos.com/api/integrations/whatsapp/callback

WhatsApp Business API Setup

> [!IMPORTANT]

> WhatsApp Business API requires **Business Verification** in Meta Business Suite before going live.

**Step 1: Create Meta App**

  1. Go to developers.facebook.com
  2. Click **My Apps** → **Create App**
  3. Select **Business** as app type
  4. Note your **App ID** and **App Secret** from Settings → Basic

**Step 2: Add WhatsApp Product**

  1. In your app dashboard, click **Add Product** → **WhatsApp** → **Set up**

**Step 3: Configure OAuth Settings**

  1. Go to **App Settings** → **Basic**
  2. Add **Privacy Policy URL**: https://atomagentos.com/privacy
  3. Add **Terms of Service URL**: https://atomagentos.com/terms
  4. Under **Data Deletion**, add: https://atomagentos.com/api/meta/data-deletion
  5. Under **Valid OAuth Redirect URIs**, add:

**Step 4: Get Embedded Signup Config ID (Optional)**

The Config ID enables the streamlined "Embedded Signup" flow where users can connect their WhatsApp Business account in a popup.

  1. Go to **WhatsApp** → **Embedded Signup** in your app dashboard
  2. Click **Create Configuration**
  3. Configure signup options:
  • Enable/disable features users can access
  • Set branding and messaging
  1. Click **Create** and note the **Configuration ID** (e.g., 1234567890123456)

> [!TIP]

> The Config ID is optional. Without it, users go through the standard Facebook OAuth flow. With it, you get a more streamlined WhatsApp-specific signup experience.

**Step 5: Set Environment Variables**

# Add to Vault secrets
atom-cli secrets set \
  WHATSAPP_APP_ID=your_meta_app_id \
  WHATSAPP_APP_SECRET=your_meta_app_secret \
  WHATSAPP_CONFIG_ID=your_embedded_signup_config_id \
  WHATSAPP_REDIRECT_URI=https://app.atomagentos.com/api/integrations/whatsapp/callback

**Step 6: Complete Business Verification**

  1. Go to business.facebook.com → **Business Settings**
  2. Click **Business Info** → **Start Verification**
  3. Submit required documents (business registration, tax ID, etc.)
  4. Wait 1-5 business days for approval

Meta App Environment Variables

VariableDescriptionWhere to Find
WHATSAPP_APP_IDMeta App IDApp Dashboard → Settings → Basic
WHATSAPP_APP_SECRETMeta App SecretApp Dashboard → Settings → Basic
WHATSAPP_CONFIG_IDEmbedded Signup Config IDWhatsApp → Embedded Signup
WHATSAPP_REDIRECT_URIOAuth Callback URLSet to https://app.atomagentos.com/api/integrations/whatsapp/callback
WHATSAPP_ACCESS_TOKENDirect API Token (for your own business)WhatsApp → API Setup
WHATSAPP_PHONE_NUMBER_IDYour Phone Number ID (for your own business)WhatsApp → API Setup

Meta Compliance Endpoints

These endpoints are automatically available and should be configured in Meta Developer Console:

PurposeURLWhere to Configure
**Privacy Policy**https://atomagentos.com/privacyApp Settings → Basic
**Terms of Service**https://atomagentos.com/termsApp Settings → Basic
**Data Deletion Callback**https://atomagentos.com/api/meta/data-deletionApp Settings → Data Deletion
**Deletion Status Page**https://atomagentos.com/api/meta/deletion-status?code=XXXAutomatically provided

---

**Storage & Knowledge**

ServiceRequired ScopesEnv Variable Prefix
**Google Drive**https://www.googleapis.com/auth/drive.readonlyGOOGLE_
**OneDrive**Files.Read.All, Files.ReadWrite.AllONEDRIVE_
**Dropbox**files.content.read, files.metadata.readDROPBOX_
**Box**root_readwrite, manage_managed_usersBOX_
**Zoho Workdrive**WorkDrive.workspace.ALL, WorkDrive.files.ALLZOHO_

**Calendar**

ServiceRequired ScopesEnv Variable Prefix
**Google Calendar**https://www.googleapis.com/auth/calendar.readonlyGOOGLE_
**Outlook Calendar**Calendars.ReadWriteMICROSOFT_

**Project Management**

ServiceRequired ScopesEnv Variable Prefix
**Asana**defaultASANA_
**Jira Cloud**read:jira-work, write:jira-workJIRA_
**Linear**read, writeLINEAR_
**Trello**read, writeTRELLO_API_KEY
**monday.com**me:read, boards:read, boards:writeMONDAY_
**Zoho Projects**ZohoProjects.projects.READ, ZohoProjects.tasks.READZOHO_

**Finance & Billing**

ServiceRequired ScopesEnv Variable Prefix
**QuickBooks**com.intuit.quickbooks.accountingQUICKBOOKS_
**Xero**accounting.transactions, accounting.contactsXERO_
**Stripe**read_only (OAuth for Connect/Agencies)STRIPE_
**Zoho Books**ZohoBooks.fullaccess.allZOHO_
**Zoho Inventory**ZohoInventory.fullaccess.allZOHO_

**Marketing & Advertising**

ServiceRequired ScopesEnv Variable Prefix
**Mailchimp**read_onlyMAILCHIMP_
**HubSpot Marketing**contentHUBSPOT_
**Meta Ads**ads_management, ads_readMETA_
**Google Ads**https://www.googleapis.com/auth/adwordsGOOGLE_
**LinkedIn Ads**r_ads, rw_adsLINKEDIN_
**Google Reviews**https://www.googleapis.com/auth/business.manageGOOGLE_

**Analytics**

ServiceRequired ScopesEnv Variable Prefix
**Tableau**tableau:content:readTABLEAU_
**Google Analytics**https://www.googleapis.com/auth/analytics.readonlyGOOGLE_

**E-commerce**

ServiceRequired ScopesEnv Variable Prefix
**Shopify**read_products, read_customers, read_inventory, read_locations, read_orders, write_orders, write_fulfillments, write_draft_ordersSHOPIFY_

**Support & Helpdesk**

ServiceRequired ScopesEnv Variable Prefix
**Zendesk**read, writeZENDESK_
**Intercom**read, writeINTERCOM_
**Freshdesk***(API Key based)*FRESHDESK_API_KEY

**Engineering & DevOps**

ServiceRequired ScopesEnv Variable Prefix
**GitHub**repo, user, read:orgGITHUB_
**GitLab**api, read_userGITLAB_
**Figma**file_readFIGMA_

---

3. Implementation Checklist

  1. **Whitelist Domains**: In the provider console, always whitelist app.atomagentos.com.
  2. **HTTPS Required**: Most OAuth providers (Google, Slack) will **refuse** to redirect to http://. Ensure you have SSL active (standard on ATOM Cloud).
  3. **Cross-Reference**: Every ID and SECRET must be added to Vault secrets to be visible to the Python UIS backend.

> [!IMPORTANT]

> **Activepieces pieces**: For any integration not listed here (the "long tail"), Atom uses the Activepieces pieces engine. These always use the **Universal API Callback** and often require specific scopes defined in the piece's documentation.

In production, these credentials should be set as environment variables.

ATOM Cloud (Production)

atom-cli secrets set \
  SLACK_CLIENT_ID=... \
  SLACK_CLIENT_SECRET=... \
  SALESFORCE_CLIENT_ID=... \
  SALESFORCE_CLIENT_SECRET=... \
  GOOGLE_CLIENT_ID=... \
  GOOGLE_CLIENT_SECRET=...

Local Development

Update your root .env file:

# OAuth Credentials
SLACK_CLIENT_ID=your_id
SLACK_CLIENT_SECRET=your_secret

# Use this for local redirect testing (usually with a tunnel like ngrok)
NEXT_PUBLIC_APP_URL=https://your-ngrok-url.ngrok-free.app

> [!TIP]

> **State Security**: Atom automatically generates and validates a state parameter for every OAuth flow to prevent CSRF attacks. Active states are stored in the oauth_states table in your database.